package com.odontosis.util;

import java.applet.Applet;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;

/**
 * Applet para a impressão de recibos
 * 
 * @author Pablo Henrique dos Reis
 * 
 */
@SuppressWarnings("serial")
public class AppletImpressao extends Applet {

	private JLabel label;
	
	private JPanel panel;
	
	private String enderecoImpressora;
	
	private List<String> texto;
	


	public void init() {

		inicializarParametros();
		//inicializarParametrosTeste();

		panel = new JPanel();
		
		panel.setBounds(600, 100, 100, 100);
		panel.setSize(100, 100);
		
		ImageIcon imgFundo = new ImageIcon(getClass().getResource("impressora0019.gif"));
		
		label = new JLabel();
		label.setIcon(imgFundo);
		panel.add(label);

		add(panel);
		
		imprimir();

	}
	
	public void imprimir() {
		
		try {
			if(getEnderecoImpressora() == null || texto == null) {

				getAppletContext().showDocument(new URL("javascript:falha();"));
			
			}

		} catch (MalformedURLException excpetion) {
			excpetion.printStackTrace();
		}
		
		try {
			for (String linha : texto) {
				String executar = "cmd /c echo " + linha + " > "
						+ getEnderecoImpressora();
				if (linha.equals(".")) {
					executar = "cmd /c echo. " + " > " + getEnderecoImpressora();
				}
				Runtime.getRuntime().exec(executar);
				System.out.println(executar);
				// delay para imprimir os dados na ordem correta de impresão
				// utilizado
				Thread.sleep(300);
			}
			// da espaços para cortar o papel
			for (int i = 0; i < 10; i++) {
				Runtime.getRuntime().exec(
						"cmd /c echo." + " > " + getEnderecoImpressora());
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		
		try {

			getAppletContext().showDocument(new URL("javascript:sucesso();"));

		} catch (MalformedURLException excpetion) {
			excpetion.printStackTrace();
		}
		
	}

	public void inicializarParametrosTeste() {
		texto = new ArrayList<String>();
		enderecoImpressora = "\\\\127.0.0.1\\bematech";
		texto.add(".");
		texto.add("teste teste");
		texto.add("teste teste");
		texto.add(".");
	}
	
	public void inicializarParametros() {
		texto = new ArrayList<String>();
		enderecoImpressora = getParameter("enderecoImpressora");
		int i = 0;
		while (i <= 100) {
			try {
				String conteudoLinha = getParameter("linha" + i);
				if (conteudoLinha == null) {
					break;
				}
				texto.add(conteudoLinha);
				i++;
			} catch (Exception eop) {
				break;
			}
		}
	}

	public String getEnderecoImpressora() {
		return enderecoImpressora;
	}

	public List<String> getTexto() {
		return texto;
	}

	public void setEnderecoImpressora(String enderecoImpressora) {
		this.enderecoImpressora = enderecoImpressora;
	}

	public void setTexto(List<String> texto) {
		this.texto = texto;
	}
	
	

}
